export class ObjectPool{
    private static _obj_list:any={}

    public static getObj(cls:any):any{
        let obj_list:any[]=ObjectPool._obj_list[cls.name];
        if(!obj_list){
            obj_list=[]
            ObjectPool._obj_list[cls.name]=obj_list;
        }
        let obj:any=null
        for(let i=0;i<obj_list.length;i++){
            if(obj_list[i].isUse && !obj_list[i].isUse){
                obj=obj_list[i];
                break
            }
        }
        if(!obj){
            obj=new cls();
            obj_list.push(obj)
        }
        obj.isUse=true
        return obj
    }

    public static returnObj(obj:any){
        if(obj){
            obj.isUse=false
            if(obj.active)obj.active=false
            else if(obj.node && obj.node.active)obj.node.active=false
        }
    }
}